﻿//缺省参数
#include <stdio.h>
void Func(int a = 0)
{
	printf("%d\n", a);
}

int main()
{
	Func(); // 没有传参时，使⽤参数的默认值
	Func(10); // 传参时，使⽤指定的实参
	return 0;
}


#include <stdio.h>
// 全缺省
void Func1(int a = 10, int b = 20, int c = 30)
{
	printf("a=%d b=%d c=%d\n", a, b, c);
}

int main()
{
	Func1();
	Func1(1);
	Func1(1, 2);
	Func1(1, 2, 3);
	return 0;
}


#include <stdio.h>
// 半缺省
void Func2(int a, int b = 10, int c = 20)
{
	printf("Func2 : a=%d b=%d c=%d\n", a, b, c);
}

void Func3(int a, int b, int c = 20)
{
	printf("Func3 : a=%d b=%d c=%d\n", a, b, c);
}

int main()
{
	Func2(100);
	Func2(100, 200);
	Func2(100, 200, 300);
	printf("\n");
	Func3(1000, 2000);
	Func3(1000, 2000, 3000);
	return 0;
}


//函数重载
#include <stdio.h>
// 1、参数类型不同
void Add(int left, int right)
{
	printf("%d\n", left + right);
}
void Add(double left, double right)
{
	printf("%lf\n", left + right);
}
// 2、参数个数不同
void f()
{
	printf("f()\n");
}
void f(int a)
{
	printf("f(int) : %d\n", a);
}
// 3、参数类型顺序不同
void fun(int a, char b)
{
	printf("a=%d b='%c'\n", a, b);
}
void fun(char a, int b)
{
	printf("a='%c' b=%d\n", a, b);
}

int main()
{
	Add(10, 20);
	Add(10.1, 20.2);
	printf("\n");
	f();
	f(10);
	printf("\n");
	fun(10, 'a');
	fun('a', 10);
	return 0;
}


